home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
sh1x
/
sh15a.d64
/
int-floppy src
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1995-03-30
|
7KB
|
255 lines
1 ; *** INTELLIGENTE FLOPPY ****
2 ; ****************************
3 ; * WRITTEN BY STEFAN ROTHER *
4 ; * FRAUENZELLSTRASSE 26 *
5 ; * 8400 REGENSBURG *
6 ; ****************************
7 ; * (C) 1986 MARKT&TECHNIK *
8 ; * VERLAG AG *
9 ; ****************************
10 .BA$CE18 ;START BEI 52760
20 JSR$AEFD;AUF KOMMA PRUEFEN
30 JSR$B79E;8 BIT-ZAHL NACH X HOLEN
60 STXZ1;UND ZWISCHENSPEICHERN
65 LDA#07;MASKE ZUM AUSFILTERN
70 ANDZ1;VON BIT 0-2 ERSTELLEN
74 ;
75 ;SPRUNGTABELLE
76 ;
80 BNEY1;BEI 0
85 JMPLOAD1;PRG MIT ',8' LADEN
90 Y1 CMP#01;MIT 1 VERGLEICHEN
100 BNEY2;WENN 1 ,DANN
105 JMPLOAD2;PRG MIT ',8,1' LADEN
110 Y2 CMP#02;MIT 2 VERGLEICHEN
120 BNEY3;WENN 2 ,DANN
125 JMPSAVE;ZUR SAVEROUTINE SPRINGEN
130 Y3 CMP#03;MIT 3 VERGLEICHEN
140 BNEY4;WENN 3 ,DANN
145 JMPGOTO;'GOTO'-ROUTINE AUFRUFEN
150 Y4 CMP#04;UND DASSELBE MIT 4
160 BNEY5;WENN 4,DANN
165 JMPJUMP;'JMP'-ASSEMBLERBEFEHL
170 Y5 RTS;WENN KEIN MODUS,DANN ZURUECK
180 ;
185 ;ALGORITHMUS ZUM AUSWERTEN
186 ;EINES DISKETTENWECHSELS
188 ;
190 FLOPPY LDA#08;PARAMETER FUER
200 LDX#08;'OPEN 8,8,15'
210 LDY#15;SETZEN
220 JSR$FFBA;FILE VORBEREITEN
230 LDA#00;KEIN FILENAME
240 JSR$FFBD;FILENAMEN VORBEREITEN
250 JSR$FFC0;'OPEN'
260 JMPA;ZUR DATENAUSWERTUNG
270 X LDX#08;FUER KANAL 8
280 JSR$FFC9;CMD OUT AKTIVIEREN
290 LDX#00;ZAEHLER AUF NULL
300 B1 LDAT1,X;UND VON FLOPPY
310 JSR$FFD2;PER BEFEHLSSEQUENZ
320 INX;VON 6 ZEICHEN
330 CPX#06;INHALT VON $1C00
340 BNEB1;ABFRAGEN
350 JSR$FFCC;CMD OFF
360 Y LDX#08
370 JSR$FFC6;CMD IN AKTIVIEREN
380 JSR$FFCF;BESAGTES BYTE HOLEN
385 PHA;UND ZWISCHENSPEICHERN
390 JSR$FFCC;CMD INAKTIVIEREN
395 PLA;BYTE ZURUECKHOLEN
400 RTS;ENDE DES UNTERPRG'S 'DATEN HOLEN'
410 ;
411 ;FORTFUEHRUNG DES HAUPTPROGRAMMS
412 ;
415 A JSRBIT05;BIT 5=1 (DIKETTENWECHSEL) ?
417 JSRLED;JA,DANN JE NACH BIT 6 LED AN
420 JSRX;HOLE AKTUELLES INFOBYTE
430 ANDZ2;UND FILTERE LICHSCHRANKENBIT
440 BNEA;HERAUS-BEI 1 WARTEN
450 ;
460 B JSRX
470 ANDZ2
480 BEQB;WARTE BIS BIT=1,LS-UNTERBRECHUNG
485 ;
490 C JSRLED;EINSPRUNG,WENN VORHER BIT5=0
500 JSRX
510 ANDZ2
520 BNEC;WARTE,BIS LS FREI
530 ;
540 LDAZ1;BIT 7 DES BEFEHLBYTES TESTEN
550 BPLF;BEI 1 SCHREIBSCHUTZ
560 ;
570 J LDX#$FF;WARTESCHLEIFE
580 E LDY#$FF;WEGEN SCHREIBSCHUTZ
590 D DEY
600 BNED
610 DEX
620 BNEE
630 JMPG
640 ;
650 F JSRX;WENN KEIN SCHREIBSCHUTZ,
660 ANDZ2;DANN AUF KERBE
670 BEQF;WARTEN
680 ;
690 G LDX#$02;UNBEDINGTE WARTESCHLEIFE
700 K LDY#$A0
704 I DECZ5
706 BNEI
710 H DEY
720 BNEI
730 DEX
740 BNEK
745 ;
750 ;ROUTINE ,DIE DEN MOTOR DER FLOPPY EINSCHALTET
755 ;UND AUF GESCHLOSSENES LAUFWERK PRUEFT
756 ;
760 LDX#08;KANAL 8
766 ;
770 JSR$FFC9;FUER CMD OUT
780 LDX#00
790 B2 LDAT2,X
800 JSR$FFD2
810 INX
820 CPX#05;LAENGE DES BEFEHLS
830 BNEB2
840 JSR$FFCC;CMD INAKTIVIEREN
841 LDX#08;NOCHMALS FUER NEUE ANWEISUNG
842 JSR$FFC9;AKTIVIEREN,UM
843 LDX#00;DER FLOPPY EINE KURZE
844 B4 LDAT4,X;INITIALISIERUNGZEIT
845 JSR$FFD2;ZU GESTATTEN
846 INX
847 CPX#06;DIEMAL 6 BEFEHLBYTES
848 BNEB4
849 JSR$FFCC;KANAL 8 INAKTIVIEREN
850 JSRY;LAUFWERK SCHON EINSATZBEREIT ?
860 CMP#$FF
870 BEQG;NEIN
880 ;
890 LDA#08
900 JSR$FFC3;CLOSE 8
910 RTS;ENDE DER AUSWERTUNG
1470 ;
1480 ;HIER WIRD DAS HAUPTPROGAMM JE NACH
1490 ;BEFEHLSBYTE WEITERGEFUEHRT
1495 ;
1500 LOAD1 LDA#00;KENNZEICHEN FUER
1510 STAKK+1;'LOAD ,8'
1520 JMPLOAD;ZUR LADEROUTINE
1540 LOAD2 LDA#01;ODER FUER ABSOLUTES LADEN
1550 STAKK+1;'LOAD ,8,1'
1555 LOAD JSR$AEFD;PRUEFT AUF KOMMA
1560 JSRFLOPPY;AUF DISKETTENWECHSEL WARTEN
1575 JSRGET;FILENAMEN HOLEN
1576 JMPLD;UND LADEN
1580 GET JSR$AD9A;VORAUSWERTEN UND
1590 JSR$B6A3;AUSWERTEN DES FILENAMENS
1600 STAZ4;LAENGE,
1610 STXLO;LO-ADRESSE UND
1620 STYHI;HI-ADRESSE MERKEN
1700 RTS;ZURUECK
1710 ;---
1720 GOTO JSR$AEFD;AUF KOMMA PRUEFEN
1730 JSRFLOPPY;AUF DISKETTENWECHSEL WARTEN
1750 JSR$AD8A;SPRUNGADRESSE FUER 'GOTO' HOLEN
1760 JSR$B7F7;IN 16 BIT ZAHL WANDELN
1770 JSR$A8A3;EINSPRUNG IN DIE 'GOTO'-ROUTINE
1780 JMP$A7AE;UND ZUR INTERPRETERSCHLEIFE
1790 ;
1800 JUMP JSR$AEFD;AUF KOMMA PRUEFEN
1810 JSRFLOPPY;AUF DISKETTENWECHSEL WARTEN
1830 JSR$AD8A;SPRUNGADRESSE FUR 'JMP' HOLEN
1840 JSR$B7F7;IN 16 BIT ZAHL WANDELN
1846 LDA#$A7;STARTADRESSE DES BASIC-
1847 PHA
1848 LDA#$AE;INTERPRETERS AUF STACK
1849 PHA
1850 JMP($14);UND ZUM MASCHINENPROGRAMM
1860 ;
1861 SAVE LDAZ1;WENN SAVE UND SCHREIB-
1863 BPLON;SCHUTZ ZUSAMMEN,DANN
1865 JSR$B248;'ILLEGAL QUANTITY ERROR'
1870 ON JSR$AEFD;AUF KOMMA PRUEFEN
1880 JSRFLOPPY;AUF DISKETTENWECHSEL WARTEN
1900 JSRGET;FILENAMEN HOLEN
1910 LDX#08;GERAETEADRESSE 8
1920 JSR$FFBA;FILE VORBEREITEN
1930 LDXZ4;LAENGE
1940 LDXLO;UND ADRESSE DES FILE-
1950 LDYHI;NAMENS HOLEN
1960 JSR$FFBD;FILENAMEN VORBEREITEN
1965 JSRGET16;16 BIT STARTADRESSE FUER SAVE
1967 STX$FE;MERKEN
1969 STY$FF
1971 JSRGET16;16 BIT ENDADRESSE FUER SAVE
1973 LDA#$FE;STEHT BEI $FE/$FF
1975 JMPCONT
1976 ;
1977 ;ROUTINE ZUM HOLEN EINER 16 BIT ZAHL UND AUSWERTUNG
1978 ;
1979 GET16 JSR$AEFD;KOMMA?
1981 JSR$AD8A;16 BIT ZAHL HOLEN
1983 JSR$B7F7;UND UMWANDELN
1985 LDX$14;LO-BYTE
1987 LDY$15;HI-BYTE DER ZAHL
1989 RTS;ENDE DER UNTERROUTINE
1990 ;
2000 CONT JSR$FFD8;'SAVE'
2010 RTS;ZURUECK ZU BASIC
2015 ;
2020 ;LADEN EINES PROGRAMMS
2025 ;
2030 LD LDX#08
2040 KK LDY#01
2050 JSR$FFBA;FILE VORBEREITEN
2060 LDAZ4
2070 LDXLO
2080 LDYHI
2090 JSR$FFBD;FILENAMEN VORBEREITEN
2100 LDA#00;LOAD-FLAG AUF 0
2101 STA$0A;UND MERKEN
2103 JMP$E16F;EINSPRUNG IN DIE 'LOAD'-ROUTINE
2200 ;
2340 ;ROUTINE PRUEFT BIT 6 DES BEFEHLBYTES
2345 ;UND SCHALTET BEI 1 DIE ROTE LED AM
2346 ;LAUFWERK AN.
2348 ;
2350 LED LDA#64
2360 ANDZ1;TEST AUF BIT 6
2380 BEQENDE;BEI 0 'RTS'
2390 LDX#08
2400 JSR$FFC9;CMD OUT AKTIVIEREN
2410 LDX#00
2420 B3 LDAT3,X
2430 JSR$FFD2
2440 INX
2450 CPX#05;5 BEFEHLBYTES
2460 BNEB3
2470 JSR$FFCC;CMD INAKTIVIEREN
2480 ENDE RTS;ENDE DES UNTERPROGRAMMS
2490 BIT05 LDA#32;TESTET BIT 5 DES BEFEHLBYTES
2500 ANDZ1
2530 BNEENDE;GESETZT,DANN DISKETTENWECHSEL
2540 PLA;NEIN,
2550 PLA;DANN STACK "SAEUBERN"
2560 JMPC;UND WEITER AUF DISKETTE WARTEN
2570 ;
2575 ;TABELLE VON ANWEISUNGEN UND (AKTUELLEN)
2576 ;ZWISCHENSPEICHERN
2580 ;
2610 T1 .TX"M-R";AUSLESEN DES DISKKONTROLLERS
2620 .BY00,28,1 ;DER FLOPPY (WEGEN LS)
2630 T2 .TX"M-E";FLOPPYMOTOR
2640 .BY71,198 ;EINSCHALTEN UND AUF 'READY' TESTEN
2644 T3 .TX"M-E";BEFEHLSSEQUENZ FUER
2646 .BY$18,$C1 ;LED AM LAUFWERK ANSCHALTEN
2650 T4 .TX"M-R";SCHON 'READY' ?
2660 .BY$FF,0,1
2670 Z1 .BY$00;PLATZ FUER BEFEHLSBYTE
2680 Z2 .BY$10;16 FUER 'AND' VERKNUEPFUNG (LS)
2700 Z4 .BY$00;SPEICHER FUER FILENAMENLAENGE
2705 Z5 .BY$00;ZAEHLER FUER WARTESCHLEIFE
2730 LO .BY$00;ZWISCHENSPEICHER FUER
2740 HI .BY$00;FILENAMENADRESSE